package windbell.domain.risk;

import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import edu.fudan.mylang.pf.INamedModelObject;
import java.util.Collection;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
import windbell.domain.risk.IHasRiskCheckTemplate;
import windbell.domain.risk.IHaveCheckTargets;
import windbell.domain.risk.IHaveRiskChecks;
import windbell.domain.risk.RiskCheck;
import windbell.domain.risk.RiskCheckSourceStatus;
import windbell.domain.risk.RiskCheckSourceType;
import windbell.domain.risk.RiskCheckTarget;
import windbell.domain.risk.RiskCheckTemplate;
import windbell.domain.risk.RiskCheckTemplateItem;
import windbell.domain.risk.impl.RiskCheckSourceImpl;
import windbell.domain.risk.proxy.RiskCheckSourceProxy;

@EntityImplementation(implementBy = RiskCheckSourceImpl.class)
public interface RiskCheckSource extends IModelObject, INamedModelObject, IHaveCheckTargets, IHaveRiskChecks, IHasRiskCheckTemplate {
  public abstract RiskCheckSourceType getType();
  
  public abstract RiskCheckSource setType(final RiskCheckSourceType type);
  
  public abstract Date getDate();
  
  public abstract RiskCheckSource setDate(final Date date);
  
  public abstract String getDescription();
  
  public abstract RiskCheckSource setDescription(final String description);
  
  public abstract String getEntityName();
  
  public abstract RiskCheckTemplate getCheckTemplate();
  
  public abstract RiskCheckSource setCheckTemplate(final RiskCheckTemplate checkTemplate);
  
  public abstract Iterable<RiskCheck> getRiskChecks();
  
  public abstract Iterable<RiskCheckTarget> getCheckTargets();
  
  public abstract Collection<RiskCheckTemplateItem> getRiskCheckTemplateItems();
  
  public abstract Boolean getRiskCheckStatus();
  
  public abstract RiskCheckSourceStatus getStatus();
  
  public abstract void start();
  
  public abstract RiskCheck createRiskCheck(final Procedure1<? super RiskCheck> init);
  
  public abstract void delete();
  
  public abstract Boolean isCreated();
  
  public abstract RiskCheckSourceProxy toProxy();
}
